package com.ailsa.learningsystem.pojo;

import com.ailsa.learningsystem.role.Role;

import java.io.Serializable;

/**
 * @Author 冉冉
 * @Version 1.0
 * pojo:统称模型层，存放实体类：Users
 * Users实体类主要是为了实现登录和注册的功能
 * 注释：3种
 *  文档注释
 *  单行注释
 *  多行注释
 *实体类为什么实现 Serializable？？？
 *      1.Serializable接口，实体类实现Serializable，实体类变成了实现类
 *      2.Serializable接口从JDK1.1开始声明的，所在的包是在java.io包，仅仅是一个接口，并没有任何的方法
 *      3.涉及到网络传输，必然涉及到IO，就会使用Serializable，序列化
 *      4.序列化：将Java对象转换为字节序列的过程
 *      5.反序列化：将字节序列转换为Java对象的过程
 * 这个序列化的ID【serialVersionUID】起着关键的作用，序列化ID决定着是否可以成功反序列化，简单来说：Java的序列化机制
 * 是通过运行时判断serialVersionUID来验证版本是否是一致的，在进行反序列化，JVM【JAVA的虚拟机】会把字节流中序列化ID与
 * 本地的实体类的序列化ID进行比较，如果相同，则认为是一致的，便可以进行反序列化，否则认识不一致的，不可以进行反序列化的。
 *
 */
public class Users implements Serializable {
    //序列化的版本号【序列化的ID】，常量
    private static final long serialVersionUID=1L;
    private String username;//用户名
    //如果不参与加减乘除，尽量使用String类型
    private String password;//密码
    //如果是学生角色，或者是讲师角色,d代表号
    private int roleNumber;
    //角色：讲师和学员
    private Role role;
    //setter和getter快捷键：ALT+Insert或者Fn+ALT+Insert

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getRoleNumber() {
        return roleNumber;
    }

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    public void setRoleNumber(int roleNumber) {
        this.roleNumber = roleNumber;
    }
    /**
     * 构造方法：无参构造方法和有参构造方法
     * 1.如果设置了有参的构造方法，无参构造方法也必须设计，自带的构造方法将不能再使用
     * 2.如果没有设置参的构造方法，那么无参构造方法可以不设置，将使用自带的构造方法
     * 构造方法的快捷键：ALT+Insert或者Fn+ALT+Insert
     */
    public Users(String username, String password, int roleNumber) {
        this.username = username;
        this.password = password;
        this.roleNumber = roleNumber;
    }

    public Users(String username, String password, Role role) {
        this.username = username;
        this.password = password;
        this.role = role;
    }

    public Users() {
    }
}
